package com.chen.handler;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @author Y·C
 * @version 1.0.0
 * @ClassName MySellHandler.java
 * @Description 必须实现InvocationHandler接口，完成代理类要做的功能 （1.调用目标方法 2.功能增强）
 * @createTime 2023年05月09日 16:30:00
 */
public class MySellHandler implements InvocationHandler {

    private Object target = null;

    //动态代理：目标对象是活动的，不是固定的，需要传入进来。

    public MySellHandler(Object target){
        //给目标对象赋值
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        Object res = null;
        //向厂家发送订单，告诉厂家，我买了U盘，厂家发货
        //执行目标方法
        res = method.invoke(target,args);
        //商家 需要加价，也就是代理要增加价格
        if (res !=null){
           Float price= (Float)res;
           price += 25;
           res = price;
        }
        //在目标类的调用后，你做的其他功能，都是增强的意思
        System.out.println("淘宝商家，给你返回一个优惠劵，或者红包");
        //增加的价格
        return res;
    }
}
